自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(263)
  • 资源 (1)
  • 收藏
  • 关注

原创 《第一行代码:Android》第三版7.4SQLite数据库存储

还有两个非常重要的方法:getReadableDatabase()和getWritableDatabase(),它们都可以创建或者打开一个现有的数据库。自己创建一个类继承自SQLiteOpenHelper,重新写onCreate()方法和onUpgrade()方法,分别对应创建数据库和升级数据库。实际情况会比例子复杂多了,很多内容都需要深入研究的,本文只是能起到入门的作用。直接用下面这种方法,可以直接操作数据库,感觉这种比较简单,但是容易出错。query()方法用来查询数据,返回的是一个Cursor对象。

2023-12-11 20:55:29 444

原创 《第一行代码:Android》第三版6.5高阶函数详解

定义:如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数。编程的数据类型有int ,布尔类型等,Kotlin中增加了一个函数类型的概念。如何声明一个函数类型?(String,Int)->Unit 这么写的意思就是:这是一个函数,接收String 和Int作为输入参数,返回值是Unit,Unit 相当于Java中的void。高阶函数允许让函数类型的参数来决定函数的执行逻辑。

2023-12-09 18:25:23 492

原创 当年为什么选择计算机?

那会我对计算机感兴趣,遗憾的是我却做不出来专业老师给我们布置的作业,是我下的功夫太少,心智不成熟,也不知道干点正经事,跑去干兼职,谈恋爱,听音乐去了…大三还是大四吧 同学说未来是Java的天下,软件报上就是这么说的,遗憾的是我那会只是听说过没有见过,后来读研究生了,才在自己的机器上实践过几个简单的程序,算是有一点基础了。工作了,国外的软件天天讲Com组件,我也研究啊研究,还有候捷的书,就是讲MFC的那本书,花了我大概六十块钱,可惜的是我并没有学会MFC就感觉这玩意有点反人性,这玩意也快玩完了。

2023-12-09 06:29:22 614

原创 《第一行代码:Android》第三版第六章广播机制

有序广播:是一种同步执行的广播,广播发出后,同一时刻只有一个广播接收者能收到广播,当这个广播接收者的内部逻辑执行完毕后,广播才可以继续传递。MainActivity.kt 文件中实现了对系统时间的变化进行监听,对按钮事件进行响应,这个按钮事件实现了自定义广播功能的实现。布局文件 activity_main.xml 主要是声明了一个按钮,点击按钮就触发了自定义的广播。标准广播:是完全异步的广播,广播发出后所有的广播接收者几乎在同一时刻接收到该广播,也是无法被截断的。广播分为两种:标准广播和有序广播。

2023-12-06 21:42:02 422

原创 《第一行代码:Android》第三版4.2常用控件的使用方法(2)

代码和例子具体的实际效果,请参考本人的同名博客(1),本文主要是各个控件的一些说明。

2023-12-02 22:23:36 428

原创 《第一行代码:Android》第三版4.2常用控件的使用方法(1)

本文主要讲解常用控件的使用,包括:TextView、Button、EditText、ImageView、ProgressBar、AlertDialog。

2023-12-02 18:59:50 564

原创 《第一行代码:Android》第三版3.7.3静态方法

首先创建个kotlin文件,把方法直接写在里面,然后就可以到处使用了。可以理解为就是我们学过的最朴实的一个函数,C语言当中的函数,没有类,直接写,然后就可以到处使用了,因为它们是。可以在类的某个方法前面添加:companion object,这样的话实际上Kotlin会为你创建一个伴生的类,而且只能创建这么一个,这样这个方法就可以象静态方法那样直接调用了。doAction2()放在了companion object这个类中,它就可以像静态方法那样调用了:Util.doAction2()是可以运行的。

2023-11-30 21:58:52 359

原创 《第一行代码:Android》第三版3.7标准函数 with的用法

with函数接收两个参数:第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式,with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式的最后一行代码作为返回值返回。一句话说就是:with (XXX){do something,都是XXX的do something}

2023-11-30 16:31:57 397

原创 《第一行代码:Android》第三版-3.4.4体验Activity的生命周期

本文的代码是在主Activity中,重载了几个生命周期函数,在日志中打印出对应的日志信息,有两个按钮,负责启动另外的Activity,并回到主Activity 由此查看日志,来体会生命周期。这个时候,如果点击startNormalActivity按钮,会出现这个activity,这个就是中间显示出来一段文字。NormalActivity.kt 和DialogActivity.kt 内容不重要,就略过了。activity_main是主Activity的布局文件,就是声明了两个按钮。

2023-11-29 21:45:51 592

原创 《第一行代码:Android》第三版-如何为一个Activity添加layout文件

你就可以修改layout文件的内容,来达到修改界面的目的。你会发现代码没有添加view,而是调用setContent()添加了内容,你可以把setContent()这段函数注释掉,添加 一句代码:setContentView(R.layout.activity_main),字面的意思就是设置内容的View,然后里面参数是布局的资源文件。就会给你创建一个没有view的Activity,如果后来你发现需要为这个Activity添加view,就是添加一个布局文件怎么办呢?可以象我这样做,实践证明是可以成功的。

2023-11-29 17:21:02 584

原创 《第一行代码:Android》第三版3.1-3.3Activity基础

本文不是Kotlin语言,实现环境是在AndroidStudio中实现的,也没有步骤,只有最后的代码,供参考。MainActivity.kt 文件内容如下:(书中是FirstActivity)主要实现的功能有:点击按钮,显示出toast,就是一小段信息文本,然后过一会就自己消失了。还有一个main.xml 书中是一个菜单的资源文件,内容如下:(请注意:由于我使用的并不是LinearLayout,我用的是contraintlayout,约束布局,因此该菜单在我的程序中并没有显示出来)

2023-11-29 12:08:37 527 1

原创 《第一行代码:Android》第三版-2.6.3Java函数式API的使用

没太懂这个地方,无所谓了。

2023-11-25 13:20:40 357

原创 《第一行代码:Android》第三版-2.6.2集合的函数式API

主要讲解集合的函数API。

2023-11-25 12:43:37 362

原创 《第一行代码:Android》第三版-2.6.1集合的创建和遍历

本文主要讲解list 、set、map的创建和遍历。

2023-11-25 11:32:35 400

原创 《第一行代码:Android》第三版-2.5.4数据类与单例类_单例类

【代码】《第一行代码:Android》第三版-2.5.4数据类与单例类_单例类。

2023-11-23 23:31:11 322

原创 《第一行代码:Android》第三版-2.5.4数据类与单例_数据类

本文主要讲述数据类,以前用java实现数据类很麻烦,写很多代码,就是搭个数据类的框架。kotlin用data class 关键字,给你简化了数据类的创建,比较贴心。toString()方法 用于提供更清晰的输入日志,否则一个数据类默认打印出来的就是一行内存地址。其中,equals() 方法用于判断两个数据类是否相等。equals()的配套方法,也需要一起 重写,否则会导致。相关的系统类无法正常工作。

2023-11-23 22:37:00 416

原创 《第一行代码:Android》第三版-2.5.3接口编程

位置大概就是2.5.2附近吧。

2023-11-23 21:49:08 498

原创 《第一行代码:Android》第三版-2.5.2继承与构造函数

写的最简单的情况下的继承。

2023-11-23 20:01:29 408

原创 《第一行代码:Android》第三版-2.5.1类与对象

本文主要是创建了一个类,后续的很多例子都和本程序有关。

2023-11-23 17:10:11 140

原创 《第一行代码:Android》第三版-2.4.3循环语句 for循环

for 循环

2023-11-23 15:38:04 95

原创 《第一行代码:Android》第三版-2.4.1 if 语句

本文主要讲解if语句,kotlin的if语句是可以有返回值的,就是if语句的最后一句话就是返回值。

2023-11-23 15:08:44 101

原创 《第一行代码:Android》第三版-2.4.2when语句

中输入网址:play.kotlinlang.org 进去后黏贴代码点击Run就可以看到结果了。

2023-11-23 11:49:03 131

原创 《第一行代码:Android》第三版-2.3变量和函数

浏览器中输入网址:play.kotlinlang.org 进去后黏贴代码点击Run就可以看到结果了。

2023-11-16 22:06:15 145

原创 孙鑫-《VC++深入详解(修订版)》—chapter1WinMain.cpp

本程序的开发环境是:VS2019,新建一个Windows桌面应用程序,然后加入了孙老师书中的代码,体验,复习了一下消息处理,窗口的创建等。程序运行起来后,可以对键盘的按键做出反应,点击左键也有反应,改变窗体大小也有反应。对了,需要修改一下该项目的字符集,原来是unicode,改为多字节字符集,要不然很多代码出错。

2023-08-27 14:03:32 321

原创 C++大学教程(第七版)Chapter22.5标准模板库-算法:Fig22_31.cpp

继续学习STL算法,本文主要讲几种基本的搜索和排序算法:find:查找,返回一个输入迭代器,指向第一个含有搜索值的元素或序列的末端(没找到的话)find_if:查找满足一定条件的,需要一个函数作为参数。sort:排序。binary_search:搜索,在搜索之前,这个序列必须要先以递增的顺序排序,返回bool值,表明是否搜索到了目标。

2022-12-28 16:45:09 162 1

原创 C++大学教程(第七版)Chapter22.5标准模板库-算法:Fig22_30.cpp

继续学习STL算法,本文主要讲:random_shuffle:随机洗牌,打乱位置。count:统计某个值的个数,比如说:vector中值为8的元素有几个呢?count_if:统计满足某个条件的元素的个数,比如说:vector中值大于9的元素有几个呢?min_element:得到最小的元素的位置,它返回一个迭代器,指向最小的那个元素。max_element:得到最大的元素的位置,它返回一个迭代器,指向最大的那个元素。accumulate:计算区间的元素的和,第三个参数值为总和的初始值。

2022-12-26 19:10:30 321

原创 C++大学教程(第七版)Chapter22.5标准模板库-算法:Fig22_29.cpp

继续学习STL算法,本文主要讲:replace:用什么元素替代另外一个元素,比如说把10替代为100。replace_if:如果满足一个条件,就做一个替换,比如说如果大于9,就替换为100。replace_copy:先做替换,然后copy到另外一个地方。replace_copy_if:满足条件,就做替换,然后copy到另外一个地方。// Fig22_29_STL_Alg_replace_replace_if.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//

2022-12-25 16:22:31 127

原创 C++大学教程(第七版)Chapter22.5标准模板库-算法:Fig22_28.cpp

确切的说remove翻译为移动比较好,因为这个函数不会改变vector中的元素,也不会破坏“删除”的元素,而是把所有没有“删除”的元素挪到了vector的前端。这个函数返回一个迭代器,指向vector中最后一个没有删除的元素后面的位置。remove_copy_if:“删除”那些满足条件的元素,再做拷贝。remove_copy:例子中就是先去做移除10这个元素的操作,然后复制copy到c.begin()的位置。remove_if:“删除”那些满足条件的元素,需要有一个一元谓词函数。

2022-12-25 14:57:59 109

原创 C++大学教程(第七版)Chapter22.5标准模板库-算法:Fig22_27.cpp

如果两个序列的长度不同,则equal()返回false。==运算符用于进行比较操作。还有另外一个版本的equal,使用一个二元谓词函数作为第四个参数,估计是比较复杂,本例子并没有包含这个版本的equal()。lexicographical_compare()函数会检测第一个序列中的元素是否比第二个序列中的小?如果小,就返回true,如果大或者相等,就返回false。mismatch()函数比较两个序列的值并返回一个pair对象,pair中的两个迭代器表明两个序列中不匹配的元素所在的位置。

2022-12-23 15:53:59 111

原创 C++大学教程(第七版)Chapter22.5标准模板库-算法:Fig22_26.cpp

fill_n:把容器中一定范围内的元素设定为某一个值,参数是:开始,count,数值,就是从某个位置开始,设定n个值,n就是这个count。generate_n:使用一个生成函数为容器中一定范围内的元素创建新的值。后面的几篇博客会讲STL的算法,这玩意看起来挺玄乎,其实就是一堆函数而已,没啥。fill:把容器中一定范围内的元素设定为某一个值,参数是:开始,结束,数值。generate:使用一个生成函数为容器中一定范围内的元素创建新的值。

2022-12-22 16:18:33 99

原创 OSG开发-使用VisualStudio2019创建CMake项目方式开发HelloOSG

本文保证你使用VS2019,可以把这个OSG程序开发出来,看到那个蓝色的带有纹理的地球。大概步骤如下:由于我们需要用OSG的库来做开发,当然就需要下载人家的库了。去OpenSceneGraph | Objexx Engineering,下载,我下载的是和VS2019配套的那个,下载后解压到E盘,OSG目录下,形成如下目录就ok。 然后可以把这个bin目录放入系统环境变量path中,如图: path的值中添加;E:\OSG\OpenSceneGraph-3.6.5-VC2019-64-Debug\bin

2022-12-06 21:28:38 1281

原创 C++PrimerPlus(第6版)中文版:Chapter17.4.5追加文件

来看看如何在文件末尾追加数据。

2022-12-04 22:24:35 203

原创 C++PrimerPlus(第6版)中文版:Chapter17.4.4命令行处理技术

C++有一种让在命令行环境中运行的程序能够访问命令行参数的机制,方法就是使用下面的main()函数:argc为命令行中参数的个数,其中包括命令名本身(就是构建出来的exe程序名)。argv是个指针,指向一个char的指针。这个有点抽象,所以可以将argv看作是一个指针数组,其中的指针指向了命令行参数。argv[0]是一个指针,指向命令行中的第一个字符串。源代码如下:运行的时候,可以先构建程序,然后进入cmd命令行模式,进入到couter.exe所在的目录,运行程序:这种方式下,这两个txt文件都

2022-12-03 19:39:30 136

原创 C++PrimerPlus(第6版)中文版:Chapter17.4文件输入和输出

这个程序就是新建一个文件,输入文件的内容,然后又打印出来到屏幕上。

2022-12-02 20:03:53 298

原创 C++_串口编程_官方示例:监视通信事件

修改后,这个程序就是同步的模式了,就是会一直处于等待状态,虽然不实用,但是好歹是能用了。用VSPD 和 XCOM V2.6 创建虚拟的COM串口后,可以用XCOM 创建一个 从COM2 发送文本到COM1的操作,之后就有输出了,这个EV_RXCHAR事件发生了。这是微软官方的一个例子,这个例子中,如果不做修改,那么他是可以异步运行的,会出现一个错误:官方也说了一下,但是不太好懂,我拷贝过来放在这里,作为参考。后续还可以多研究研究,作为一个最权威,最基本的例子,这个作为入门我觉得很不错,推荐给大家。

2022-11-27 18:27:04 1410

原创 C++大学教程(第七版)Chapter14.4类模板-fig14_04

我为了不另外创建一个VS项目,就在上一个博文的工程里面直接新建了一个XXX.CPP文件,然后在含有main的CPP文件中,#include,工程结构如下图。本文主要聚焦于用一个函数模板来对类模板进行测试,看起来挺麻烦的,做起来似乎又不是很麻烦,让我自己写 我又写不出来,还是看看人家作者是怎么实现的吧。运行效果和上一篇博文是一样的。头文件请参考上一篇博文。

2022-11-24 11:47:56 288

原创 C++大学教程(第七版)Chapter14.4类模板-fig14_03

main()函数中来测试一下,看看效果。

2022-11-23 23:26:58 185

原创 C++大学教程(第七版)Chapter14.2函数模板-fig14_01

template 这样就是表示 T是个某个类型,是作为模板来使用的。用关键字typename 指出函数模板形参 ,实际上就是指任何内置类型。函数模板,打印数组。

2022-11-22 22:03:44 264

原创 一份CPP的面试题,这是要招聘大师吗?

cout

2022-11-15 12:17:24 607 3

原创 Effective C++_1让自己习惯C++_条款03:尽可能使用const

将某些东西声明为const ,可以帮助编译器侦测出错误用法。const 可以施加于任何作用域内的对象、函数参数、函数的返回类型、成员函数本体。当const 和non-const 成员函数有着实质等价的实现时,令non-const版本调用const版本可以避免代码重复。编译器强制实施bitwise constness,但你编写程序时候应该使用概念上的常量性。

2022-11-15 10:09:56 290

sap管理思想-90pages

sap管理思想,内容还不错,看了就知道!

2011-07-11

空空如也

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

TA关注的人

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