w1100n
This site is best viewed in Google Chrome
wiloon, 12/12/2019 18:05

https://blog.csdn.net/u010856276/article/details/82146607 ibatis升级到mybatis,不是简单的升级包就OK了,为什么这么说呢?因为升级后,调用接口变了,配置文件的写法也变了,所以从某种程度来说, mybatis不是ibatis的升级版,只是一个家族出来的,长得像而已,升级的工作量还是很大的。 下面我们就来实际升级一下,毕竟ibatis最终是要淘汰的,同时mybatis也给我们在日常开发中提高了工作效率。 升级流程如下: 1、移出项目中的ibatis相关包: ibatis相关包其实只有一个包,即:ibatis-sqlmap-x.x.x.jar,各项目因版本而;如果项目同时使用了spring集成包spring-orm-x.x.x.jar,也一并移出。 2、引入mybatis相关包依赖到项目中: mybatis相关包其实只有一个包,即:mybatis-x.x.x.jar,但我们一般是和spring一起集成使用mybatis的,这样能方便使用spring提供的事务管理特性,所以还需要引入mybatis-spring-x.x.x.jar 在maven的pom,xml引入配置如下 org.mybatis mybatis 3.4.6 org.mybatis mybatis-spring 1.3.2 1 2 3 4 5 6 7 8 9 10 3、移出项目中的ibatis相关配置及文件(与spring集成为样例): classpath:common-sqlmap-config.xml classpath*:ibatis-sqlmap-config.xml 1 2 3 4 5 6 7 8 9 10 同时移出common-sqlmap-config.xml和ibatis-sqlmap-config.xml … Continue reading

wiloon, 12/11/2019 16:48

awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。 – awk https://blog.wiloon.com/?p=3738 – sed https://blog.wiloon.com/?p=13845 – grep https://blog.wiloon.com/?p=468 https://thief.one/2017/08/12/1/

wiloon, 12/11/2019 13:43

Buffer 指的是 sysctl 中的 rmem 或者 wmem,如果是代码中指定的话对应着 SO_SNDBUF 或者 SO_RCVBUF,从 TCP 的概念来看对应着发送窗口或者接收窗口。 sudo sysctl -a | egrep “rmem|wmem|adv_win|moderate” https://www.infoq.cn/article/sFjkj1C5bz2kOXSxYbHO?utm_source=rss&utm_medium=article

wiloon, 12/9/2019 12:48

Funtoo Linux 是由 Daniel Robbins(Gentoo Linux的创始人和前项目领袖)和一个核心开发团队基于 Gentoo 的发行版,它基于一个简单的愿景,那就是提升Gentoo Linux中的核心技术。 https://imtx.me/archives/923.html https://www.funtoo.org/Welcome

wiloon, 11/27/2019 16:06

Kafka的分区数是不是越多越好? 分区多的优点 kafka使用分区将topic的消息打散到多个分区分布保存在不同的broker上,实现了producer和consumer消息处理的高吞吐量。Kafka的producer和consumer都可以多线程地并行操作,而每个线程处理的是一个分区的数据。因此分区实际上是调优Kafka并行度的最小单元。对于producer而言,它实际上是用多个线程并发地向不同分区所在的broker发起Socket连接同时给这些分区发送消息;而consumer,同一个消费组内的所有consumer线程都被指定topic的某一个分区进行消费。 所以说,如果一个topic分区越多,理论上整个集群所能达到的吞吐量就越大。 分区不是越多越好 分区是否越多越好呢?显然也不是,因为每个分区都有自己的开销: 一、客户端/服务器端需要使用的内存就越多 Kafka0.8.2之后,在客户端producer有个参数batch.size,默认是16KB。它会为每个分区缓存消息,一旦满了就打包将消息批量发出。看上去这是个能够提升性能的设计。不过很显然,因为这个参数是分区级别的,如果分区数越多,这部分缓存所需的内存占用也会更多。假设你有10000个分区,按照默认设置,这部分缓存需要占用约157MB的内存。而consumer端呢?我们抛开获取数据所需的内存不说,只说线程的开销。如果还是假设有10000个分区,同时consumer线程数要匹配分区数(大部分情况下是最佳的消费吞吐量配置)的话,那么在consumer client就要创建10000个线程,也需要创建大约10000个Socket去获取分区数据。这里面的线程切换的开销本身已经不容小觑了。     服务器端的开销也不小,如果阅读Kafka源码的话可以发现,服务器端的很多组件都在内存中维护了分区级别的缓存,比如controller,FetcherManager等,因此分区数越多,这种缓存的成本就越大。 二、文件句柄的开销 每个分区在底层文件系统都有属于自己的一个目录。该目录下通常会有两个文件: base_offset.log和base_offset.index。Kafak的controller和ReplicaManager会为每个broker都保存这两个文件句柄(file handler)。很明显,如果分区数越多,所需要保持打开状态的文件句柄数也就越多,最终可能会突破你的ulimit -n的限制。 三、降低高可用性 Kafka通过副本(replica)机制来保证高可用。具体做法就是为每个分区保存若干个副本(replica_factor指定副本数)。每个副本保存在不同的broker上。期中的一个副本充当leader 副本,负责处理producer和consumer请求。其他副本充当follower角色,由Kafka controller负责保证与leader的同步。如果leader所在的broker挂掉了,contorller会检测到然后在zookeeper的帮助下重选出新的leader——这中间会有短暂的不可用时间窗口,虽然大部分情况下可能只是几毫秒级别。但如果你有10000个分区,10个broker,也就是说平均每个broker上有1000个分区。此时这个broker挂掉了,那么zookeeper和controller需要立即对这1000个分区进行leader选举。比起很少的分区leader选举而言,这必然要花更长的时间,并且通常不是线性累加的。如果这个broker还同时是controller情况就更糟了。 如何确定分区数量呢?   可以遵循一定的步骤来尝试确定分区数:创建一个只有1个分区的topic,然后测试这个topic的producer吞吐量和consumer吞吐量。假设它们的值分别是Tp和Tc,单位可以是MB/s。然后假设总的目标吞吐量是Tt,那么分区数 =  Tt / max(Tp, Tc) 说明:Tp表示producer的吞吐量。测试producer通常是很容易的,因为它的逻辑非常简单,就是直接发送消息到Kafka就好了。Tc表示consumer的吞吐量。测试Tc通常与应用的关系更大, 因为Tc的值取决于你拿到消息之后执行什么操作,因此Tc的测试通常也要麻烦一些。 ———————————————— 版权声明:本文为CSDN博主「AlferWei」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/OiteBody/article/details/80595971

wiloon, 11/26/2019 10:57

MCC: 国家码 MNC: 运营商码 LAC: 位置区码, 大区 CellID: 基站塔码, 小区

wiloon, 11/20/2019 16:00

https://colobu.com/2016/12/21/how-to-dump-goroutine-stack-traces/ https://golang.org/pkg/net/http/pprof/ https://segmentfault.com/a/1190000016412013 import _ “net/http/pprof” go func() { fmt.Println(http.ListenAndServe(“localhost:6060”, nil)) }() go tool pprof http://localhost:6060/debug/pprof/heap

wiloon, 11/11/2019 18:21

http://idc.wanyunshuju.com/li/580.html

wiloon, 11/8/2019 9:49

state和status的区别 state:比较常用,各种状态都可以用它,但是它更着重于一种心理状态或者物理状态。 Status:用在人的身上一般是其身份和地位,作“状态,情形”讲时,多指政治和商业。 state倾向于condition,是一种延续性的状态。status常用于描述一个过程中的某阶段(phase),类似于C语言中枚举型变量某一个固定的值,这个值属于一个已知的集合。 比如淘宝买家问卖家“我的网购现在是什么状况?” 这个问题的背景是讲话双方都清楚,交易状态有“买家选购”“买家已付款”“卖家已发货”“买家已签收”或者有“买家已 投诉”等等状态。这些状态描述一件事情发展过程中的不同阶段。而且,这些阶段的先后顺序也是双方默许的。 所以在这里可以问“What’s the status of my purchase?”,此处用state不太贴切,如果硬用上去从语感上可能听着别扭。 说物态变化用state再恰当不过。如果说一个物质的四种状态,可以说“solid state”,但如果你说“solid status”,第 一,这两个词的组合不像是描述物态,更像是在说“确定的状况(solid产生歧义‘确定的/确凿的’)”;第二,这个说法即 使不被误解,也需要事先约定一组物态变化顺序,比如把这个物质从固态开始加热然后电离,可能先后经历固态、液态、气态、等离子态这四个阶段。类似先定义枚举,然后引用的方式。 扩展: ajax中readyState,statusText,onreadystatechange,window.status怎么一会state一会是status都晕乎了 state所指的状态,一般都是有限的、可列举的,status则是不可确定的。 比如 readyState — 就那么四五种值 statusText — 描述性的文字,可以任意 onreadystatechange — 那么四五种值之间发生变化 window.status — 描述性的文字,可以任意 来个形象的比方,你体重多少公斤,属于status,但说你体重属于偏瘦、正常还是偏胖,那就是state. https://www.cnblogs.com/likebeta/archive/2012/07/03/2574595.html

wiloon, 11/6/2019 11:02

& 位运算 AND | 位运算 OR ^ 位运算 XOR &^ 位清空 (AND NOT) << 左移 >> 右移 & 操作符 假设给定数值 a,b 只有满足 a = b = 1 的情况下下 AND(a,b) = 1,否则为 0 所以AND的另外一个很好的效果是可以用于把一个整数进行清零。 func main() { var x uint8 = … Continue reading

wiloon, 11/2/2019 22:38

Mosquitto介绍 Eclipse Mosquitto是一个开源(EPL / EDL许可)消息代理,它实现了MQTT协议版本3.1和3.1.1。Mosquitto重量轻,适用于从低功耗单板计算机到完整服务器的所有设备。 MQTT协议提供了一种使用发布/订阅模型执行消息传递的轻量级方法。这使其适用于物联网消息传递,例如低功率传感器或移动设备,如电话,嵌入式计算机或微控制器。 Mosquitto项目还提供了用于实现MQTT客户端的C库,以及非常流行的mosquitto_pub和mosquitto_sub命令行MQTT客户端。 Mosquitto是Eclipse Foundation的一部分,是一个iot.eclipse.org项目。 官网: http://mosquitto.org/ http://blog.itpub.net/31555484/viewspace-2375531/

TC1
wiloon, 11/2/2019 22:31

https://ljr.im/articles/streamline-the-fibonacci-tc1-firmware/ docker pull python:2-slim-stretch docker run -it –name mico -v /home/wiloon/tmp/mico:/workdir python:2-slim-stretch bash apt update && apt install git wget lib32ncurses5 ln -s /usr/local/bin/python /usr/bin/python #容器bash pip install mico-cube && \ cd /workdir && \ wget http://firmware.mxchip.com/MiCoder_v1.1.Linux.tar.gz && \ tar … Continue reading

wiloon, 11/1/2019 16:30

https://colobu.com/2019/02/23/1m-go-tcp-connection/ https://github.com/smallnest/1m-go-tcp-server

wiloon, 11/1/2019 13:29

vnote界面不响应的问题 新建一个系统环境变量QT_OPENGL,可以尝试的值包括desktop或angle或software。 https://tamlok.github.io/vnote/zh_cn/#!docs/%E7%94%A8%E6%88%B7/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98.md#toc_8

wiloon, 10/29/2019 17:52

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/pianzif/article/details/32106971 堆组织表就不说了,其索引中记录了记录所在位置的rowid,查找的时候先找索引,然后再根据索引rowid找到块中的行数据 索引组织表,其行数据以索引形式存放,因此找到索引,就等于找到了行数据。 — 堆组织表的数据是散放的,索引和表的数据是分离的 索引组织表的索引和数据是在一起的 — 堆组织表的存储速度因为不用考虑排序, 所以存储速度会比较快. 但是要查找符合某个条件的记录, 就必须得读取全部的记录以便筛选. 而这个时候为了加快查询速度, 索引就出现了, 索引是针对少量特定字段的值拿出来进行排序存储, 并记录在表中的位置,  而因为索引是有序的, 所以就会很容易通过索引查询到具体的记录位置, 然后再根据记录位置直接从表中读取该记录. 同时因为索引的字段较少, 所以索引通常会比其基表小得多. 从上面通过索引访问表记录的方式可以看出, 当要访问的数据量较大时, 通过每一条记录的位置去访问原始记录,  每一条符合条件的记录都需要经过索引访问后再访问基表这样一个复杂的过程, 这会花费很多时间, 同样, 如果不经过索引而直接查询表, 也可能因为表字段太多, 记录较大的情况下把全部的数据读取进来, 这也会花费很多时间. 那怎么办呢? 这个时候就会想到, 如果表中数据本身就是有序的, 这样查询表的时候就可以快速的找到符合条件的记录位置,  而很容易判断符合条件记录的位置, … Continue reading

wiloon, 10/29/2019 17:50

不加order by 的情况 下, 顺序 不能保证, 不同存储引擎, 有过增删改操作 都有可能 影响默认顺序, 默认排序只依赖于内部实现, 不同版本的mysql也有可能 不同. 所以不能依赖默认排序. https://my.oschina.net/alarm1673/blog/1814508 https://stackoverflow.com/questions/8746519/sql-what-is-the-default-order-by-of-queries

wiloon, 10/29/2019 10:20

http://jdbi.org/ jdbi jdbi是我比较喜欢的一个数据库中间件,它是非ORM的,特别适合于数据库固定不变的场景,即不会对应多种数据库,以后也不会更换数据库的场景。如果不是这种场景,那么使用jdbc或者最好选择hibernate等对多种数据库兼容较好的中间件。 基于上述使用场景,jdbi的优点有: 和jdbci比较接近,使用和掌握非常简单。 与时俱进,例如说现在最新的jdbi3,增加了流式编程函数式等编程风格。 源代码的实现思路非常清晰,有一种美感。使用jdbi封装出的数据库代码也非常清晰。 jdbi的两种风格 Fluent Api handle.createUpdate(“INSERT INTO user(id, name) VALUES (:id, :name)”) .bind(“id”, 2) .bind(“name”, “Clarice”) .execute(); 这里就是java8的流式风格,用连贯式表达式将一个sql实现串在一起 Declarative Api // Define your own declarative interface public interface UserDao { @SqlUpdate(“CREATE TABLE user (id INTEGER … Continue reading

wiloon, 10/28/2019 17:43

[ function ] funname [()] { action; [return int;] } # 定义函数 fun0 fun0(){ echo “run fun0 ” } # 调用函数 fun0 fun0 # 定义带参数的函数 fun0 fun0(){ echo “run fun0 $1 ” } # 调用带参数的函数 fun0 fun0 foo https://www.runoob.com/linux/linux-shell-func.html https://wiki.jikexueyuan.com/project/shell-tutorial/shell-function-parameter.html

next page
辽ICP备14012896