- 博客(212)
- 资源 (21)
- 收藏
- 关注
原创 用sql教你什么是mysql的四种隔离级别
事务的基本要素A 原子性、C 一致性、I 隔离性、D 持久性。事务并发产生的问题脏读,不可重复读幻读mysql事务隔离级别读未提交 read-uncommitted读已提交 RC read-committed可重复读 RR repeatable-read (mysql默认的隔离级别为 RR)串行化 serializable读未提交事务A读取到了事务B未提交的数据。首先,在开启两个query的窗口,都执行下面的两行sql-- 先执行下,可以看到mysq
2020-09-18 00:04:54 1919 2
原创 自旋锁以及Java中的自旋锁的实现
什么是自旋锁多线程中,对共享资源进行访问,为了防止并发引起的相关问题,通常都是引入锁的机制来处理并发问题。获取到资源的线程A对这个资源加锁,其他线程比如B要访问这个资源首先要获得锁,而此时A持有这个资源的锁,只有等待线程A逻辑执行完,释放锁,这个时候B才能获取到资源的锁进而获取到该资源。这个过程中,A一直持有着资源的锁,那么没有获取到锁的其他线程比如B怎么办?通常就会有两种方式:1...
2018-08-07 00:45:18 21401 3
原创 rustrover打开会报Error: Invalid toolchain
如果正常输出,但在使用 RustRover 时出现“Invalid toolchain”错误,可能是由于 RustRover 工具链配置有问题或路径指向错误。
2024-08-13 17:06:17 497
原创 rust接受字符串作为参数的两种写法
str:适用于不需要修改字符串并且你不需要拥有所有权的情况。String:适用于需要修改字符串或需要拥有所有权的情况。选择哪种类型取决于你是否需要修改字符串以及你如何管理字符串的所有权。
2024-07-23 19:48:45 295
原创 mysql5.7升级到mysql8.0遇坑
mysql5.7升级到mysql8.0发现生产环境服务会报错Error querying database. Cause: java.sql.SQLSyntaxErrorException: FUNCTION GeomFromText does not exist在MySQL 8.0中,`GeomFromText`函数已经被弃用,取而代之的是`ST_GeomFromText`函数。你可以将你的查询从`GeomFromText`更新为`ST_GeomFromText`。这是因为MySQL 8.0引入
2024-06-20 12:54:23 405
原创 添加webpack.config.js配置
所以,在前面的博客中,我们初始化了一个空的项目,当执行webpack打包时,需要先手动在src目录下创建一个index.js文件,这样在执行npm run build后,在dist的目录下生成了一个main.js文件,这个也验证了上面零配置打包规则的第1点和第2点。上述配置,指定了入口文件,同时指定了dist文件夹下输出的文件名为bundle.js,执行npm run build,会看到在dist文件下多了一个bundle.js文件。
2024-05-20 13:00:30 488
原创 使用npm script运行webpack
Npm Script 还有一个重要的功能是能运行安装到项目目录里的 node_modules 里的可执行模块,比如之前安装了webpack,是无法直接在项目根目录下通过命令 webpack 去执行 Webpack 构建的,直接执行webpack命令会报错 command not found: webpack。可以向 npm 脚本传递参数,这些参数可以通过 `--` 分隔符传递给脚本,比如 npm run test -- --verbose,这将向test脚本传递 --verbose参数。
2024-05-07 11:30:39 468 2
原创 初始化创建一个webpack项目
执行npm install webpack webpack-cli --save-dev,安装webpack和webpack-cli。git的变更里,package.json中可以看到新增了两个依赖项目,安装了webpack和webpack-cli。git变更里,新增了一个package.json的文件,初始化了一个空的npm项目,将这个改动提交commit。安装后的webpack,实际上是放到了node_module下,可以执行以下命令来验证webpack的版本。执行nvm use 19.2.0。
2024-05-05 12:23:53 463
原创 使用nvm管理node版本
那我应该是用brew install node执行安装的,可以使用brew info node来查看node是否有安装过,显示如下有一行Installed说明,node是使用brew install安装的,版本是19.2.0,跟我上面执行node -v输出的版本是一致的,那这样就好办了,直接执行brew uninstall。npm:是 node.js 默认的包管理系统(用 JavaScript 编写的),在安装的 node 的时候,npm 也会跟着一起安装,管理 node 中的第三方插件。
2024-05-05 00:21:20 874
原创 mysql使用st_distance_sphere函数报错Incorrect arguments to st_distance_sphere
st_distance_sphere函数报错
2023-09-01 09:45:10 1586
原创 浅谈Java中的观察者模式
如果要自己编码实现,我们通常定义一个主题接口(Subject)和一个观察者接口(Observer)。主题接口中包含注册观察者、移除观察者和通知观察者的方法,而观察者接口中则定义了更新状态的方法。考虑到实现简单点,我们假定有一个广播类,这个广播类实际上就是一个主题Subject,有多个听众收听这个广播,这里每个听众就是一个观察者Observer。观察者模式是软件开发中常用的一种设计模式,它通过定义一对多的依赖关系,使得一个对象(主题)的状态变化可以通知多个其他对象(观察者)。写一个测试类来测试结果。
2023-08-24 13:14:32 734
原创 macbook golang版本升级
如何查看mac上是通过pkg安装包安装的go语言,还是通过brew install go安装的go语言。不同的安装方式,升级go语言版本方式会有不同。
2023-07-19 22:59:05 7630
原创 OpenStreetMap实战-准备postgresql
个人推荐,下载Postgres.app的方式,这样后续不需要了,直接在应用程序中,将这个Postgres.app删除掉即可。打开Postgres的应用程序,默认是创建了一个postgres的数据库,双击这个数据会出现命令行。而后我们进入到这个osm的数据命令行中,执行创建拓展的命令。下载后,直接双击dmg文件,将app拖入到应用程序中即可。我是macos的系统,点击macos链接,进入下载页。在命令行中创建一个名为osm的数据库。下载postgresql。
2023-05-25 11:05:51 186
原创 OpenStreetMap初探与实战
OpenStreetMap(OSM)是一个由志愿者创建并维护的免费和开源的地图数据库。其目的是为全球任何人提供可自由使用、编辑和分发的地图数据。OpenStreetMap数据库中的地理要素包括道路、建筑、河流、森林、山脉、公共设施等。由于OpenStreetMap是开放的平台,任何人都可以添加新的地理信息,从而使其不断发展和更新。OpenStreetMap已经成为诸如Google地图等商业地图的一个重要替代品。
2023-05-24 22:40:22 4134
原创 macbook brew install 经常遇见 No such file or directory @ rb_sysopen
安装php : brew install php ,在执行过程中经常报错,比如以下==> Installing php dependency: openldap==> Pouring openldap-2.5.8.arm64_monterey.bottle.tar.gzError: No such file or directory @ rb_sysopen - /Users/li.xiang/Library/Caches/Homebrew/downloads/93f5617b379ba
2022-05-15 21:52:47 4788 2
原创 使用Semaphore 实现一个简单的限流器
# 使用Semaphore 实现一个简单的限流器## java apiJava的api中,提供了semaphore这个线程同步的辅助类,用来控制同时访问共享资源的线程数量。Semaphore提供的主要方法如下:void acquire():获取一个信号量,在获得信号量前线程会一直阻塞。void release():释放一个信号量。int availablePermits(): 返回当前可用的信号量数。boolean hasQueuedThreads(): 查询是否有等待获取信号量
2021-10-27 23:01:39 244
转载 springboot mock controller和log4j 单元测试实践1
本文重点将讲述如何在单元测试中,mock controller的请求,测试controller请求,同时顺带着讲解如何在单测中测试代码日志中输出的内容。首先,新建spring boot的项目![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/950a825fe2cd4e05aa757d323551cbd7~tplv-k3u1fbpfcp-watermark.image?)![image.png](https://p3-j
2021-10-26 12:19:52 628 1
原创 macos 安装rust
官方建议使用rustup来安装,rustup可以方便的在不同的rust版本之间切换brew install rustup使用rustup安装Rust编译器(rustc)和Rust包管理器(cargo)rustup-init安装完成后,会提示如下关闭shell窗口重新打开,或者直接当前shell下执行下面语句,即可生效source $HOME/.cargo/env...
2021-08-30 20:15:18 404
原创 推送同一份代码到两个不同的仓库
想把同一份代码推送到两个不同的仓库,比如推送到github和gitee。有一份代码放在了github上,也想把这份代码同时推送到gitee上。有两种方式:一种方式gitremote add gitee git@gitee.com:csucoderlee/leetcode.git在推送代码的时候,再额外git push gitee xxxxx 就可以了。这么搞,其实比较麻烦,每次提交的时候都需要push两次git push origin xxxxx / git push ...
2021-07-18 21:01:57 1301
原创 spring-data-jpa报错,‘hibernate_sequence‘ doesn‘t exist
学习spring-data-jpa的时候,写了一个entityimport javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;@Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType
2021-05-25 23:45:55 2737 1
原创 修改git提交历史中的作者信息
新建了一个仓库,提交了修改并push,发现提交历史的作者信息使用的是全局的配置,即~/.gitconfig中[user]的信息。想只要针对这个仓库配置另外的作者信息,到这个仓库下vi .git/config,编辑了额外的[user]信息,这样这个仓库下的每次提交都会使用当前仓库的配置。但是,之前已经使用全局的配置提交了一次,所以想要修改历史这次提交的作者信息。执行git rebase -i HEAD~1返回fatal: invalid upstream 'HEAD~1'原
2021-05-05 23:07:12 1387
原创 org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder 找不到依赖包
org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder 找不到依赖包,发现高版本的spring boot已经移除了这个类需要改成以下这个org.springframework.boot.jdbc.DataSourceBuilder经验证spring-boot-starter-parent 2.4.5 可用...
2021-05-05 20:52:24 4952
原创 idea git is not installed
早上来了公司,发现windows下idea点击右键,查看annotate,也就是代码的提交记录,发现idea报错git is not installed找了半天原因也没有找到翻了下idea的官方文档https://www.jetbrains.com/help/idea/settings-version-control-git.html需要指定下执行的path,如下图...
2020-11-26 09:28:26 21743 7
原创 LocalCache客户端缓存本地缓存的实现
LocalCache,也被称为客户端缓存或者本地缓存。某些业务场景上,并不需要搭建一套复杂的分布式缓存如redis,只需要在单机上维护一套缓存配置即可。可以自己设计实现一个本地的缓存服务。设计实现一个本地缓存服务,主要考虑一下三点:1. 数据结构。选用的数据结构是什么,查找效率如何,一般都会选用hashmap的方式来存储数据2. 缓存失效策略。缓存失效了怎么办?是通过定时删除失效的数据,还是当访问某个数据,发现该数据到了过期时间,此时,来删除这个数据。3. 缓存淘汰策略。缓存写满了怎
2020-10-15 16:44:49 970
原创 程序员mac开发环境配置
拿了一台新的macbook pro。作为一个程序员,我把自己的开发环境给贴出来。1.输入法先把苹果的系统自带的中文输入法,换成自己习惯的搜狗输入法。2. 略3. jdk 7u71直接下载dmg文件安装4. git在terminal中,直接输入git --version,就会提示当前没有安装,确认一键安装么,直接点击确定。详细的一些git配置 在这个下面https://blog.csdn.net/u010372981/article/category/3134095..
2020-10-15 14:30:28 1511
原创 通过idea测试JVM内存回收
首先,写段psvm的代码public class Test { public static void main(String[] args) { }}执行下,这样在idea中就会出现 edit configurations选项点击进入编辑,主要修改的是VM options选项修改的内容如下-Xms20M-Xmx20M-Xmn10M-XX:+PrintGCDetails-XX:SurvivorRatio=8然后运行该main函数,就会打印如下
2020-09-15 17:13:13 491
原创 二叉树只看这一篇就够了,前/中/后序遍历(递归与非递归)
二叉树的遍历,分为前序遍历、中序遍历、后序遍历。其中注意两点:1. 前序,中序,后序遍历,这个"序"指的就是根2. 左子树优先于右子树拿前序遍历举例:前序遍历,这个"序"指的就是根。首先根要先遍历出来,然后是左子树,最后是右子树。左子树有自己的下级子树,所以也就按照根+左子树+右子树的套路来排列。右子树也是如此。下面代码注释中,构造了一个简单的二叉树,首先 6 -> 左子树(3/4/5)-> 右子树(7/8/9) ,左子树(5/4/3)也是按照套路来排列,即5 -&...
2020-09-04 22:06:34 313
原创 kafka之协调服务
kafka中是使用zookeeper来构建集群的。zookeeper相信大家都了解过,如果之前没接触过zookeeper的同学,可以参考学习下zookeeper的相关内容。知道zookeeper最核心的功能就是提供了一个分布式的存储系统,数据存储方式类似UNIX系统的文件树形结构。zookeeper保证了数据一致性。学习zookeeper,我觉得zookeeper中最主要的是抓住两个特性:临时节点和watcher机制。什么是临时节点?在zookeeper文件树形存储结构中,每个节点被称为ZN
2020-08-12 22:19:30 337
原创 kafka之消费
消费者客户端使用kafkaconsumer向broker订阅topic,接收消息进行消费。kafka中消息的消费,要知晓两个紧密相关的概念:消费者consumer和消费者组consumer group。消费者和消费者组每个consumer的实例只属于某一个consumer group。对于每个consumer group,在任意时刻,每个分区partition至多有一个consume实例在消费,反过来,consumer group中的每个consumer独占一个或多个partition分区。
2020-08-04 23:22:50 390
原创 kafka是如何实现高性能IO
kafka在众多消息队列中,性能肯定是第一梯队的,有着很高的吞吐量,每秒钟可以达到500M以上的吞吐量。而kafka能够做到这么高的吞吐量,离不开高性能的IO,kafka是从以下几个方面来提升高性能IO的。批处理从生产者发送到消费者消费,整个过程中,kafka都进行了批处理的操作。生产者发送一条消息,无论是同步还是异步发送的,kafka都不会立马把这条消息发送出去,而是先放到内存中,将多个单条消息组成一个批消息,发到broker端。到了broker端,这一个批消息并不会被拆解开,而是仍旧作
2020-08-02 23:04:22 559
原创 kafka是如何实现高可用的
HA,也就是高可用,kafka 0.8版本之前是没有HA的,如果一个broker挂了,那么这个分区也就是挂了,分区内的消息都没办法继续被消费。kafka 0.8版本之后引入了副本机制(replicas)。副本机制也是分布式系统中的常用的机制。副本机制:1. 提供了数据冗余,一旦分布式系统某部分出现问题,系统依然能够正常运转,保证了整体的可用性和数据的持久性。2. 提供伸缩性,可以动态的横向扩展,增加系统的吞吐能力3. 针对跨机房跨地域,可以选择就近的备份数据,降低系统的时延kaf
2020-08-01 22:51:45 1437
原创 kafka的一些术语
kafka是基于发布与订阅模型的分布式消息引擎。什么是发布与订阅(引用维基百科)在软件架构中,发布-订阅是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者(如果有的话)存在。简单的来说,消息的生产者只需要通过发布,将消息分类发送到不同的地方,消息的消费者订阅指定的分类,消费其中的消息。主题就是
2020-08-01 15:18:48 261
原创 如何设计实现幂等框架
1.定义幂等:就是对于同一个接口,同一个业务请求,无论发起多少次,保证业务只执行一次,也就是接口的逻辑只会被执行一次。2.使用场景场景:微服务A中调用微服务B中的接口,会有三种结果出现,即成功、失败、超时。成功和失败两种结果非常明确,如果是成功,那么表示此次调用是正常的。如果是失败,那么表示此次调用是失败的,可以由调用的发起方来根据失败的结果决定接下来要做的事情。但是超时就是一个非常不明确的事情了, 有可能是微服务B中的逻辑已经成功执行完成,但是返回成功的结果的网络传输过程中产生了超时;
2020-07-26 23:46:56 483
原创 mysql为什么不建议使用订单号或者其他形式的业务单号作为主键?
mysql为什么不建议使用订单号或者其他形式的业务单号作为主键?目前我们电商平台的订单号,或者其他业务单号,为了保证唯一,多数都选择的是雪花算法snowflake或者其他变种来生成的。生成分布式电商业务唯一id的实现,可以参考:https://tech.meituan.com/2017/04/21/mt-leaf.html美团点评的这篇博客,这篇博客基本涵盖了目前所有的方式方法。但是...
2019-11-16 22:09:52 2350 2
原创 kafka书籍推荐
最近在看消息中间件的内容,自然不能避开kafka这门比较火的消息中间件,哦,当然,平时大家都习惯将消息中间件,说成是消息队列。学习一门新的技术,当然是翻看下官方文档,看看入门系列,至于如果要深入的话,建议可以看看书籍,目前为止可以看的书籍如下。第一本,我推荐《深入理解Kafka:核心设计与实践原理》作者:朱忠华推荐理由,这本书目前是我接触到最新出版的一本书。但是属于进阶系列的。...
2019-09-27 00:16:06 12340 2
numpy 1.8 for win7 64bit
2015-06-02
zend studio11.0.2全过程破解文件
2014-11-09
中文版本的JavaTM Platform Standard Ed. 6API规范
2014-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人