自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MinggeQingchun的博客

记录就是一种积累,积累就是一种提高,提高就是一种成长!

  • 博客(1168)
  • 资源 (7)
  • 收藏
  • 关注

原创 JUC - 多线程之 单例模式(八)

单例模式(Singleton Pattern)是一种非常简单的设计模式之一,当我们使用的对象要在全局唯一时就需要用到该模式,以保证对象的唯一性。除此之外,还能避免反复的实例化对象,减少内存开销单例类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象单例主要有如下创建方式优点:写法简单;避免了线程同步问题缺点:在类装载的时候就完成实例化,没有达到Lazy Loading懒加载的效果。如果从始至终从未使用过这个实例,则会造成内存的浪费 优缺点同上 优点:在使用时才会生成对象

2022-10-24 12:00:34 150

原创 JUC - 多线程之阻塞队列BlockingQueue(四)

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端 (front) 进行删除操作,而在表的后端 (rear) 进行插入操作。和栈一样,队列是一种操作受限制的线性表,进行插入操作的端称为队尾,,进行删除操作的端称为对头.在队列中插入一个队列元素称为入队, 从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故。

2022-10-20 22:14:12 23

原创 Java--多线程之synchronized和lock;死锁(四)

在了解synchronized之前,我们先看一个线程不安全的示例如一个账户中有1万块钱,两个人同时取钱,会导致余额不对,或者取的钱比账户中金额还多输出如下t1和t2线程分别在同一个总金额为1万的账户取款 5千,然余额还是5千,这就导致了多线程并发下数据不安全的情况。

2022-10-12 13:19:45 194

原创 JVM -- 类加载器;双亲委派机制;线程上下文类加载器(八)

类加载器就是根据类的二进制名(binary name)读取java编译器编译好的字节码文件(.class文件),并且转化生成一个java.lang.Class类的一个实例。每个实例用来表示一个Java类,jvm就是用这些实例来生成java对象的。如new一个String对象;反射生成一个String对象,都会用到String.class 这个java.lang.Class类的对象。基本上所有的类加载器都是java.lang.ClassLoader 类的一个实例。

2022-10-11 20:41:00 203

原创 JVM -- 垃圾回收;垃圾回收算法(三)

https://blog.csdn.net/MinggeQingchun/article/details/126947384https://blog.csdn.net/MinggeQingchun/article/details/127066302

2022-10-01 21:20:51 481

原创 JVM -- JVM内存结构:程序计数器、虚拟机栈、本地方法栈、堆、方法区(二)

JVM的内存结构大致分为五个部分,分别是。除此之外,还有由堆中引用的JVM外的直接内存。

2022-09-30 17:36:36 729

原创 Java--Stream流详解

Stream是Java 8 API添加的一个新的抽象,称为流Stream,可以一种声明的方式处理数据stream().filter()一般适用于list集合过滤list中的数据,主要作用就是模拟sql查询,从集合中查询想要的数据,不用像之前一样遍历list再筛选orElse(null)表示如果一个都没找到返回null(orElse()中可以塞默认值。如果找不到就会返回orElse中设置的默认值)orElseGet(null)表示如果一个都没找到返回null(orElseGet()中可以塞默认值。

2022-08-30 07:28:40 1489 2

原创 Kubernetes - Kubernetes部署“容器化应用”(二)

kubectl create deployment deployment名称 --image=自定义项目镜像名称 --dry-run -o yaml > 需要生成的yaml文件。kubectl create deployment deployment名称 --image=自定义项目镜像名称 --dry-run -o json > 需要生成的json文件。kubectl create deployment deployment名称 --image=自定义项目镜像名称 --dry-run -o yaml。

2022-08-20 22:25:25 313

原创 Kubernetes - Kubernetes详解;安装部署(一)

Kubernetes 这个单词源于希腊语,意为“舵手”或“飞行员”。Kubernetes,也称为K8S,其中8是代表中间“ubernete”的8个字符,是Google在2014年开源的一个容器编排引擎,作为CNCF(Cloud Native Computing Foundation;云原生计算基金会)最重要的组件之一Kubernetes用于自动化容器化应用程序的部署、规划、扩展和管理,它将组成应用程序的容器分组为逻辑单元,以便于管理和发现,用于管理云平台中多个主机上的容器化的应用。

2022-08-19 12:42:46 331

原创 SpringCloud - Spring Cloud Alibaba 之 Seata分布式事务服务;AT事务模式(二十)

Seata事务组编号 seata.tx-service-group,用于TC集群名,一般格式为:${spring.application.name}-group。Seata事务组编号 seata.tx-service-group,用于TC集群名,一般格式为:${spring.application.name}-group。Seata虚拟组和分组的映射 seata.service.vgroup-mapping.${seata.tx-service-group}=default。................

2022-08-07 09:00:12 233

原创 SpringCloud - 微服务(Microservices);Spring Cloud详解(一)

作为一名Java程序员,对系统架构的演变还是需要清楚的,首先就简述一下架构的演变历程单体架构比较初级,典型的三级架构,前端(Web/手机端) + 中间业务逻辑层 + 数据库层。这是一种典型的Java Spring MVC 框架的应用单体架构就是把所有的功能、模块都集中到一个项目中,部署在一台服务器上,从而对外提供服务(集中式架构、单体服务、单体应用)单体架构的应用比较容易部署、测试, 在项目的初期,单体应用可以很好地运行。然而,随着需求的不断增加, 越来越多的人加入开发团队,代码库也在飞速地膨胀。慢慢地,单

2022-06-14 12:59:43 305

原创 Docker - Docker详解及使用

在说Docker之前,我们先说说传统服务器传统的独立服务器,它是一个独立的硬件设备,可以理解成是一台放在机房的高配置电脑;有独立的处理器、内存、硬盘、带宽等资源,可根据需求安装各种操作系统以及配置各种环境这种服务器缺点:1、花费成本较高(时间成本,资金成本)2、应用迁移比较麻烦,需要重新购买服务器,安装操作系统,配置运行环境,部署应用因此出现了虚拟化技术,主要分为硬件虚拟化(hardware-level-virtualization)操作系统虚拟化(os-level-virtua

2022-04-08 15:54:46 544

原创 Java--Maven多模块管理

超大侧率maven父工程必须遵循两点要求:1、packaging标签的文本内容必须设置为pom2、将src目录删除掉一、空工程Empty Project设置1、创建一个空工程Empty Project(1)File----New----Project,选择Empty Project,点击Next(2)输入工程名,以及存放路径Project name:项目名称Project location:项目存放位置路径2、创建Maven父工程(1)File----

2022-04-05 21:50:19 1276

原创 Java--Maven,POM,maven安装,maven核心,命令

一、MavenMaven是Apache软件基金会组织维护的一款自动化构建工具,Maven这个单词的本意是:专家,内行。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理maven官网地址maven官网maven中央仓库maven中央仓库1、Maven作用(1)maven 可以整合多个项目模块之间的引用,还可以根据业务和功能拆分项目(2)maven可以自

2022-03-27 19:45:35 800

原创 Java--数组和集合区别

博主之前是做移动端iOS开发的发现一直有一个疑问,比如Java中数组

2022-03-05 19:58:12 1764 2

原创 Java--Collection和Map集合

一、Collection二、Map

2022-02-19 21:59:48 911 3

原创 MySQL-事务;存储引擎

一、事务(transaction)MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!(1)在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。(2)事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行(3)事务用来管理DML语句(insert,update,delete).

2022-01-19 22:18:54 558

原创 MySQL-函数

一、数据处理函数(单行处理函数)单行处理函数的特点:一个输入对应一个输出1、lower() 转换小写;标准SQL中函数LCASE()select lower(ename) as ename from emp;2、upper() 转换大写;标准SQL中函数UCASE()select upper(ename) as empname from emp;3、substr() 取子串(substr( 被截取的字符串, 起始下标,截取的长度))MID(字段,1,end)- 从某个...

2022-01-16 21:44:59 305

原创 SQL- join多表关联

SQL 连接(JOIN)【1】SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段【2】下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法【3】SQL JOIN 类型INNER JOIN:内连接,又叫等值连接,返回两个表中连接字段相等的行LEFT JOIN:左连接,即使右表中没有匹配,也从左表返回所有的行RIGHT JOIN:右连接,即使左表中没有匹配,也从右表返回所有的行FULL J.

2022-01-07 21:09:48 7624 2

原创 Java--多态;抽象类;接口

一、抽象类1、final关键字 1.1、final修饰的类无法继承。 1.2、final修饰的方法无法覆盖。 1.3、final修饰的变量只能赋一次值。 1.4、final修饰的引用一旦指向某个对象,则不能再重新指向其它对象,但该引用 指向的对象内部的数据是可以修改的。 1.5、final修饰的实例变量必须手动初始化,不能采用系统默认值。 1.6、final修饰的实例变量一般和static联合使用,称为常量。 public ...

2021-11-01 16:26:00 645

原创 iOS-isa指针;objc实例对象、类、元类、根类、根元类

11

2021-10-07 10:53:07 542

原创 iOS-class方法和objc_getClass方法

根据上一篇博客iOS-class、object_getClass、objc_getClass、objc_getMetaClass区别的研究发现,qi's

2021-10-07 10:12:25 922

原创 iOS-class、object_getClass、objc_getClass、objc_getMetaClass区别

对于这几个方法的区别,首先需要了解 OC 类的数据结构,(任何runtime的文章都会介绍的)对于 class 和 object_getClass 和 objc_getClass 三种方法,首先:全部返回 Class 类对象class 方法class 方法无论是类对象还是实例对象都可以调用,可以嵌套,返回永远是自身的类对象。如:Person *p = [[Person alloc]init];Class *pClass == [p class] == [ [p class]class] .

2021-10-07 09:17:30 459

原创 iOS-Runtime之class_addMethod给类动态添加方法

一、简介/** * Adds a new method to a class with a given name and implementation. * * @param cls The class to which to add a method. * @param name A selector that specifies the name of the method being added. * @param imp A function which is the imple

2021-10-05 22:18:13 716

原创 iOS-Runtime消息发送、转发机制

在iOS开发中我们经常会遇到这样的crashunrecognized selector sent to instance 0x******

2021-10-04 22:23:07 364

原创 iOS-Runtime之SEL、IMP、Method

它们之间的关系可以这么解释:一个类(Class)持有一个分发表,在运行期分发消息,表中的每一个实体代表一个方法(Method),它的名字叫做选择子(SEL),对应着一种方法实现(IMP)。具体的分析如下:...

2021-10-04 21:14:40 449

原创 iOS-Runtime之unrecognized selector sent to instance/class 防护Crash

可在GitHub上下载示例源代码Demo,欢迎点赞给星,谢谢!一、报错在iOS开发中我们经常会遇到这样的crashunrecognized selector sent to instance 0x******二、报错原因报错原因就是我们调用了一个不存在的方法。用OC的消息机制来说就是:消息的接收者找不到对应的selector,这样就启动了消息转发机制,我们可以通过代码在消息转发的过程中告诉对象应该如何处理未知的消息,防止程序crash。默认实现是抛出下面的异常,这样也就crash了.

2021-10-04 08:04:45 324

原创 Java--Java版本和JDK版本

对于Java初学者,经常会听到同事,或看到网上Java版本和JDK版本不一的叫法,不明白这两者到底什么关系?其实博主当年初学Java时也有这样的困惑,今天我们就来好好探讨一下,如有不对之处,请加以指正,不喜勿喷,谢谢! Java版本叫法:Java6、Java8、Java11、Java13 (当前最新版本Java17) 等这一类 “Java X” 的Java版本名称同时又会听到,看到 JDK版本叫法:JDK1.6、JDK1.8等这种“J...

2021-10-01 17:23:17 20515 11

原创 Java--HashMap

一、HashMapHashMap 是一个散列表,它存储的内容是键值对(key-value)映射。散列表(哈希表)是一种空间换时间的存储结构,是在算法中提升效率的一种比较常用的方式。散列表,是指可以通过关键字key直接访问到内容value的一种数据结构。可以一个value对应多个key,但是一个key只能对应一个value,其中是通过key映射到一个位置上,来直接访问value。二、HashMap数据结构1、HashMap源码实现HashMap 继承于AbstractMap,实现了 M

2021-07-01 10:31:13 193 1

原创 Java -- 集合(Map接口和Collection接口)

1、常见集合Map接口和Collection接口是所有集合框架的父接口【1】Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是Set和List。Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。【2】Map是Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。Map包含了key-value对。Map不能包含重复的key

2021-07-01 09:20:48 250

原创 iOS - iOS8.0 至 iOS15.0 版本变化

本文主要讲述iOS8.0系统至iOS14系统的变化差异,博主踩坑历程,仅为iOS开发提供参考,不包括UI一、iOS8.01.定位功能使用改变// 判断定位操作是否被允许if([CLLocationManager locationServicesEnabled]) { locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; [locationManager start......

2021-06-02 18:03:17 1783 3

原创 MacOS-MacAPP通过纯代码不依赖storyboard/xib加载UI主界面

在网上下载了很多MacOS端的APP开源项目和代码,发现基本都是通过storyBoard或xib加载UI;但是我想和iPhone一样在AppDelegate中创建主UIWindow,然后设置自定义的rootViewController,如下图:在网上找了很久,发现可参考的资料太少了,但是功夫不负有心人啊,博主最终解决了我们如何通过纯代码而不依赖storyboard/xib加载UI主界面呢?1、删除项目中的Main.storyboard或者xib文件要在项目Info.plist中删除M

2021-05-06 09:49:21 706 6

原创 MacOS-MacAPP使用Main.storyboard启动视图程序踩坑

由于主做移动端APP的iOS开发,对于Mac端的APP开发较少,我也本以为,简单的以为会和iOS差不多雄赳赳,气昂昂没想到啊,真是没想到啊,帅不过3秒!!!尴尬!!!在程序视图启动入口处就挂了,踩了一些坑,创建macOS项目步骤我就不再介绍了,可参考博文本人使用OC创建的macOS项目,勾选了storyboard,创建好项目之后,界面如下:一、坑一:删除ViewController自定义Controller,运行APP还是空白window默认有ViewController.h和V

2021-05-02 12:30:05 753 2

原创 iOS-symbolicatecrash符号化Crash文件

在我们的app上线了时候,还是会或多或少的存在一些闪退问题,这时候已经无法去调试获取崩溃信息。有些crash日志会传到后台(前提是接口给你提供,你自己也做了这个功能)但是有些crash日志是在用户的iPhone等设备上才能找到的。对于开发人员来说,有些crash日志不需要用户提供就可以找到日志文件,这时候就要看闪退的app的包是不是在你本机Mac上进行打包的:本机: 那就可以直接用Xcode的Or...

2018-06-19 15:30:31 918 1

原创 iOS-iPad强制竖屏

新建项目时我们都会选择“Universal”(同时适用于iPhone和iPad),但是iPad有好几个方向需要适配,在iPad应用开发时如何让设备只支持横屏(landscape)或竖屏模式,设置方法如下:通过Xcode中的plist文件设置“Supported interface orientations (iPad)”,如果只支持横屏的话,只选择横屏左和横屏右,这种方法实质是在xxx_info....

2018-05-22 17:10:36 6008 1

转载 iOS-watchdog看门狗机制

背景应用 100% Loss 时完全无法启动,一直崩溃。彻底切断网络连接正常启动,调试模式状态下等待时间非常久,但可以启动,并伴随 UI 微卡。强烈的预感这是线程阻塞。前一段时间被 Core Data Concurrency 折腾的够呛,看见线程问题就略有些心慌。原因首先看了 crash log,一如猜测,的确是卡在了主线程;意料之外的是,无数次闪退只留下了一份崩溃日志,如下所示:第一次见,读了一...

2018-05-02 13:41:59 1777

原创 Java--Mac安装配置Tomcat

在这里作为新手安装Tomcat,肯定会问:安装tomcat和jdk必须统一版本么?jdk1.7的必须安装tomcat7.0版本么?其实这个答案只能说不一定,但是尽量保持版本一致;因为java向下兼容,也就是说,JDK8配置tomcat7也没问题,但是JDK,eclipse,tomcat的位数 和你电脑系统的位数要统一 比如都是32位 或者都是64位。JDK最好安装1.7以上,有些新出的特性

2017-10-26 16:44:46 567

原创 Java--static关键字,main方法说明

1、随着类的加载而加载2、优先于对象存在3、被类的所有对象共享举例1:一个班级的学生应该共用同一个班级编号这个特点是在告诉我们什么时候使用静态如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的举例2:饮水机(用静态修饰);

2017-02-15 21:54:00 640

原创 Java--成员变量和实例变量,静态变量和局部变量

在类中的位置不同* 成员变量:在类中方法外* 局部变量:在方法定义中或者方法声明上在内存中的位置不同* 成员变量:在堆内存(成员变量属于对象,对象进堆内存)* 局部变量:在栈内存(局部变量属于方法,方法进栈内存)生命周期不同* 成员变量:随着对象的创建而存在,随着对象的消失而消失* 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失初始化值不同* 成员

2017-02-15 13:16:52 1432 4

原创 Java--Mac下JDK的安装路径

苹果的Mac系统已经包含了完整的J2SE(Java SE),其中就有JDK和JVM(苹果叫VM),如果要升级JDK,需要自己下载安装。 在Mac系统中,JDK的安装路径与windows不同,默认目录是:/System/Libray/Frameworks/JavaVM.Framwork/。 在这个目录下有个Versions目录,里面有不同版本的JDK。首先,让我们打开硬盘:Finder-->前往

2017-02-09 11:22:19 3080

UILabel的text设置不同颜色、字体

UILabel的text设置不同颜色、字体

2016-09-19

导航栏渐变透明

导航栏渐变透明

2016-09-19

cell自适应高度

cell自适应行高

2016-09-19

Xcode的Targets多版本构建

使用Xcode的Targets进行多版本构建

2016-08-18

Xcode的Targets进行多版本构建

使用Xcode的Targets进行多版本构建

2016-08-17

使用Xcode的Targets进行多版本构建

使用Xcode的Targets进行多版本构建,使用相同的代码,却使用不同的资源文件

2016-08-17

UIlabel根据文本、字体获得label宽度;自适应宽高

UIlabel根据文本、字体获得label宽度;自适应宽高

2004-07-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除