刘教练的篮球训练站
Integers are whole numbers. 整数是整数。
1
my_number = 354
Floats are numbers with decimal places. When you do a calculation that results in a fraction e.g. 4 ÷ 3 the result will always be a floating point number.
1
my_float = 3.14159
A string is just a string of characters. It should be surrounded by double quotes.
1
my_string = "Hello"
You can add strings to string to create a new string. This is called concatenation. It results in a new string.
1
2
"Hello" + "Angela"
#becomes "HelloAngela"
Because the double quote is special, it denotes a string, if you want to use it in a string, you need to escape it with a “"
1
2
3
speech = "She said: \"Hi\""
print(speech)
#prints: She said: "Hi"
Running@MillsMA_5k_Oct2022:
选择排序/Cycle Sort让
和Yiwen的Machine Learning的summary,12/31/2021前完成
XSS跨站脚本攻击,为了与CSS避免同名,所以缩写为XSS。攻击方式是利用网页开发时留下的漏洞,讲恶意脚本嵌入到用户将会访问的页面中,这样当正常用户访问该页面时,会导致之前嵌入的恶意脚本被执行,从而恶意攻击用户。
Intellij中Java Stream的dubug经常不知道怎么做的,最近看到这个文档Intellij Java Stream Debug才发现挺方便用的。
Click the Pic Below:
有些时候,数据按行存储,但是报表的时候需要按列输出,这时候就需要转置。同时,数据本身存储的行不知道共有多少,这时候需要知道需要多少列,也即是动态转置。MySQL中没有built-in的函数进行动态转置的操作,所以需要使用SQL来完成,以下是如何使用SQL语句在MySQL中动态转置将行转变成列。
Click the Pic Below:
世界一直在变,每个人也一直在变,变化的世界,变化的我们,没法去匹配过去不变的观点。因此,不要用现在的思维方式去判断过去的对错。况且,人的大脑天然就会欺骗自己,都会朝着对自己更有利的方向,选择性记忆甚至是涂改性记忆。
架构师思维导图
通达是某上市公司全资投资成立的一家物流快递公司,主要进行同城快递业务,公司刚刚成立,组建20人技术部门,准备两个月后系统开发完成上线,你是后端架构师,请你完成系统顶层架构设计,并组织架构评审会议。
PageRank是一种对网页进行排名的直观方法,它是Google早期阶段的网络索引算法的基础。这里我们从以下几个方面来了解PageRank:
Apache Spark是一个框架,可让让使用者立即分析数据并主要执行内存中的计算。此外,Spark还可以单独或与Hadoop/YARN等结合使用。这些因素导致许多人宣布Hadoop即将消失,并认为Sparks是其永久替代品。实际上,就Hadoop而言,借助MapReduce的增强功能,它可以首先在处理信息之前先存储所有信息。由于它跟Spark比速度不占优势,但可用于处理内存量很小的大量数据,所以仍是很有用的。Spark则使用内存中数据处理,这意味着它将占用大量内存,因为在处理完成之前将需要大量数据缓存。因此,在选择Spark之前,需要确保有足够的内存。
“如何快速对一个大文件进行解析?”比如一个10GB的大日志文件,需要用比如Logviewer这样的专门软件来查看,普通文件编辑软件无法查看,如果解析的时候直接把文件读入到内存中,内存会很慢并且可能爆栈,如何高效解析呢?
过去数十年来,通信领域中,尤其是服务提供商(communications service provider, CSP)已传输并收集了大量有关客户呼叫模式,无线数据使用,位置,网络带宽统计信息甚至移动设备访问的单个应用程序和网页的信息。
在大数据的概念出现之前,稍微有点规模的企业想做以决策为目的的技术和应用,通常是用商业智能BI框架/数据仓库来做,传统的BI通常由Data warehouse技术来处理不用来源的数据, 比如企业的ERP,CRM,SCM这样的业务系统等等等,利用数据分析和数据挖掘,然后使用商用报表工具比如microstrategy,tableau或者自定义报表做数据可视化。
高度可用的数据意味着几乎可以无中断访问的数据。通常用9的个数来衡量,影响高可用的因素包括:
包括以下实践
Dubbo的同步调用时序图 上面是同步调用的流程,异步调用与之不同的是,调用线程拿DefaultFuture实例阻塞get结果,而是调用即返回(要立刻保存RpcContext中的Future的引用,不然可能被其他线程覆盖掉),在需要拿结果的时候,再用future.get()方法取结果即可。
DDD 是软件行业的一种成熟的方法论和模式。通过应用 DDD,我们能够很好的将需求应对到设计,能够让开发聚焦业务本身而不是技术,能够让代码体现我们设计,能够让团队在一个框架内有节奏的开发。
仅仅从名字上看,垃圾回收看起来是可以从内存中查找和清空垃圾,实际上,垃圾收集会跟踪JVM堆空间中的每个可用对象,并删除未使用的对象。从而达到回收已经分配出去的内存, 然后可以进行再分配。
面试中谈JVM垃圾回收从四个方面回答:
架构师也需要在算法和数据结构上有坚实的基础。需要对以下主题有基本的了解才能开始:
了解数组,链表,二叉树,哈希表,图,堆栈,队列,堆和其他基本数据结构。
如果想精通算法,需要从几个不同的领域中了解一些数学概念。 集合论Set Theory,有限状态机finite-state machines,正则表达式regular expressions,矩阵乘法matrix multiplication, 按位运算bitwise operations,求解线性方程式linear equations,重要的组合概念combinatorics,例如排列permutations,组合combinations,信鸽原理。
了解如何在计算机中表示数据,数字逻辑设计,布尔代数,计算机算术,浮点表示,高速缓存设计的基础知识。尝试并学习一些有关C和汇编语言的知识。
性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?
CAP定理也称为Brewer定理,是由计算机科学家Eric Brewer在2000年分布式计算原理研讨会上提出的。 在CAP定理中,分布式系统有三个指标:
首先回顾下什么是Hashing,Hashing是一种将任意大小的数据映射到固定大小的另一数据(通常是整数)的技术,称为哈希或哈希码。
互联网产品的特点可以说有以下:
本周感想集中在初创团队的架构思维一个维度上面 - 安全
https://collegegrad.com/tough-interview-questions
树形结构不论在生活中或者是开发中都是一种非常常见的结构,一个容器对象(如文件夹)下可以存放多种不同的叶子对象或者容器对象,容器对象与叶子对象之间属性差别可能非常大。
设计模式是解决软件设计中常见问题的典型解决方案。它们就像预制的蓝图,可以对其进行自定义以解决代码中反复出现的设计问题。
DIP基本思想很简单但很重要:提供复杂逻辑的高级模块应易于重用,并且不受提供实用程序功能的低级模块的更改的影响。 为此,需要引入一种抽象,该抽象将高级模块和低级模块彼此分离。
以WinSCP举例,说明一个Remote file server client实现依赖反转原则的例子 为远程文件服务器(FTP,云存储…)实现一个客户端。可能将其视为一组抽象接口:
软件工程师是一份充满变化的职业,总是有新的语言可供学习,新的平台可供理解,以及新的业务问题需要解决。 软件从初级开始,成长的方向不止一个。
食堂就餐卡系统设计
02-08-2020 Saturday
Here I am introducing all the “Best time to Buy and Sell Stock” coding questions in leetcode:
[7, 1, 5, 3, 6, 4]
Inside an integer array, each element stands for one price of the stock, and with different buy/sell strategies, to get best benefits.
121 can only buy once
122 can buy unlimited times
123 can only buy twice (can’t have two stocks at the same time and need to sell before the second buying)
309 have cool down so cannot buy stock the second day right after selling it
188 similar to 123, but can do k times transactions
714 how to maximize benefits with transaction fees
首先看121,只能买一次,买一次的收益就是负的价格,比如在第一天买的收益胃-7,在第二天买的收益为-1,如此可以去找到最低的价格买进来,然后在这个最低价格后面找到一个最高的价格卖出去,在题目中就是在1的位置买入(收益为-1),在6的位置卖出(收益为+6),将二者收益加在一起,最后的结果为5,这就是买一次和卖一次的最大收益。 不考虑泛型的动态规划,就是写一次遍历,记录最小值,然后把这个最小值后面的值挨个来减去这个最小值,来更新全局最大的profit,也就是答案。 122类似,只要前一天的价格比当天价格大,就不买了,否则买下来,第二天卖出去即可获得收益,然后把每次买卖的收益加起来即可,例子[7, 1, 5, 3, 6, 4],在1的时候买,6的时候卖;3的时候买,6的时候卖,即可。 123和188则是在122的基础上加上2次和k次的区别,309则是卖掉后第二天不能直接买的限制。
所有的题目可以通过一个DP方程,不同题目只需细微的修改,即可求解。求解只能交易k次的情况,推导出相关方程式,当k==1时,为121题;当k==max时,为122题;当k==2时,为123题;309有cooldown和714有transction fee的情况再特殊处理下。所以这一系列题关键就是求k的情况。
1) 暴力法,这个把所有k次买卖的组合都拿出来试试,这个方法略;
2)DP,第一步,状态的定义,dp[i] 表示到了第i天最大的利润max profit,为了变量名表示有意义,把数组称为maxProfit[i],假设题目的数组长度为n,那我们只需要返回maxProfit[n - 1]的数值就是要的结果。 第二步,状态转移方程的推导,我们先尝试下maxProfit[i]能否有前一天的状态(maxProfit[i - 1])来推导出:
11-05-2018 Monday
This blog is to show how to deploy Java Web Application to Heroku freely
05-12-2018 Saturday
这篇文章主要是记录我如果解决了这个发布问题, 具体的解决方案文件和教程我已经上传至 Github https://github.com/liungkejin/GradlePublish
之前的文章 Android Studio 发布项目到Maven/JCenter仓库, 将 Java 库发布到 Maven/JCenter 上.
但是今天我打算将我的 Kotlin 库发布上去的时候, 发现了一些问题. 因为 Kotlin 文件不能用 javadoc工具来生成 Javadoc,
导致了在执行
任务的时候 1
bintrayUpload
1
javadocJar
两个任务都不能 build 成功,
虽然我可以把这两个任务去掉, 没有 *-sources.jar 和 *-javadoc.jar 一样也是可以发布到 Maven 上的,
但是如果要发布到 JCenter 上就需要这两个文件了,如果没有则审核过不了1
sourcesJar
JCenter hosts Java applications that follow the Maven convention. In addition to the existing files, you will need a *-sources.jar, and optionally a *-javadoc.jar. Your files should be under a Maven path layout. (see https://bintray.com/docs/usermanual/uploads/uploads_includingyourpackagesinjcenter.html)
Once those files are added, we will be glad to include your package in JCenter.
然后我在 Kotlin 社区找了一下关于生成 Javadoc 的讨论,最后发现 Kotlin 的 KDoc 项目已经没有了, 但是 Kotlin 开发了 Dokka , Dokka 是 kotlin 的一个文档生成引擎.
Dokka is a documentation engine for Kotlin, performing the same function as javadoc for Java. Just like Kotlin itself, Dokka fully supports mixed-language Java/Kotlin projects. It understands standard Javadoc comments in Java files and KDoc comments in Kotlin files, and can generate documentation in multiple formats including standard Javadoc, HTML and Markdown.
但是又很不幸的是, 目前 dokka 的
目前还没有 release, 而且 dokka 项目的 README
也都是坑, 虽然这个 Android gradle plugin 没有 release, 不过他已经在上面写上用法了, 也没说明有没有 release,
直至我在 bintray 上查看了他们的版本文件才知道确实没有这个 plugin…., 然后我试了一下使用 1
dokka-android-gradle-plugin
,
但是我也没有弄成功, 可他的 README 上面明明就是这样写的1
dokka-gradle-plugin
05-06-2018 Saturday
学习和使用 Kotlin 来开发安卓已经有一段时间了, 总体来说, 我还是很喜欢 kotlin 这个语言的, 比 java 用起来感觉轻便很多, 特别是支持 lambda, 委托, 隐式类型转换, 让代码显得特别的精炼.
最主要的是 kotlin 很大程度避免了 java 里面的空指针异常, 而且可以和 java 自由混合.
用 Kotlin 来开发 Android 也极好的, 因为 Kotlin 支持 Java 6+ :)
可以看一下 java 和 kotlin 的语言对比:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// java
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.post(new Runnable() {
@Override
public void run() {
//
}
});
}
});
// kotlin, lambda, 虽然 Java 8 也支持 lambda 了, 但是 Android 不支持 Java8 ...
view.setOnClickListener {
it.post {
// run
}
}
// java, 这里如果 view 为 null, 则会抛出Null异常
void invisibleView(View view) {
view.setVisibility(View.INVISIBLE);
}
// kotlin, 这是不允许传入null, 所以不会出现 Null 异常
fun invisibleView(view: View) {
view.visibility = View.INVISIBLE
}
// 即使允许传入 null, kotlin 也可以很轻松的避免 Null 异常
fun invisibleView(view: View?) {
view?.visibility = View.INVISIBLE
}
不过kotlin也有一些不如人意的地方, 比如 泛型感觉没有java的好用 (可能是我还没掌握好吧!),
但总的来说 kotlin 是很值得学习的!
04-10-2018 Tuesday
一般我们使用 Navigation Menu 的形式为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"/>
</android.support.v4.widget.DrawerLayout>
再加上 v21 的主题:
1
2
3
4
5
6
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
这种最标准的形式, 运行的效果就是这样的:
这种效果看起来就好像状态栏浮在 NavigationLayout 之上, 感觉上会好很多
04-07-2018 Saturday
ExRecyclerView ExRecyclerView 使用 Kotlin 编写
很多时候我们在使用 RecyclerView 时, 总是会碰到需要设置一个 header 或者 footer 的情况,
比如我们要加一个显示加载更多的footer,跟随 RecyclerView 一起滑动的 header, 等等,
这种情况如果是 ListView 我们可以简单的使用
或者 1
addHeaderView()
就可以解决, 但是 RecyclerView 就需要我们自己来进行处理. 虽然说不困难,
但是每次都要重新实现一遍就很麻烦了.1
addFooterView()
ExRecyclerView一共实现了3个功能:
ExRecyclerAdapter 是一个内置了 List 集合的 RecyclerAdapter, 每次改变数据都会主动进行相应的notify(也可以主动不进行 notify)
04-03-2018 Tuesday
Jekyll 的语法高亮在 Jekyll 3.0 以上默认使用的是 Rouge,
如果使用的是 Jekyll 2, 需要在配置文件里面设置
为 1
highlighter
,
并确保 rouge 被正确的安装了1
rouge
[表示此方法我没成功]
另外, 就是使用 Pygments, 这个需要使用 Python 来安装
如果你不想麻烦, 可以直接使用我的这个 syntax.css, 这个就是最后使用 pygments 生成的默认的代码高亮 css 文件
把这个 syntax.css 放在 1
/assets/css/syntax.css
在
或者你自己的通用头文件里面添加 link1
_include/head.html
1
<link rel="stylesheet" href="/assets/css/highlight.css">
1
_config.yml
设置 1
highlight: true
03-27-2018 Tuesday
为了方便自己和他人引用我所写的java库,发布到 Maven/JCenter 上是最好不过了,利己利人,本文主要参考了
虽然这篇已经很详细的,但是我在实际操作中还是碰到了一些问题,所以自己再整理一遍,方便以后查阅
03-26-2018 Monday
I developed Android for a while, but rarely used the test framework, instead generally used log for debugging and testing.. The right operation, the handling of abnormal conditions, the processing of boundary conditions, all rely on their own imagination, the code and application robustness can be imagined!
So it is necessary learning test framework, although it may be rarely used in the company, because you may not have time to write a test case. The workload of writing a test case is no less than an application function, but I still think the test is necessary for coding.
03-05-2018 Monday
First GitHub Blog, it is built by jekyll + bootstrap !
Thanks github for Github Pages!
The Layout of this Blog refers Monkey Snatch Banana
Personal pages use resumecard
给 n 笔订单,每笔订单都需要快递服务。
给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。
一维数组正负数碰撞后剩下的,都为正或都为负
2D数组上消除
给定一个 不含重复 单词的字符串数组 words ,返回 words 中的所有 连接词 。
一个使用这三个可能值初始化的 m x n 网格房间。
117 Populating Next Right Pointers in Each Node II